﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using App_Persistencia;
using System.Data;

namespace App_Negocio
{
    public class Presupuesto_Detalle
    {
        Menu menu;

        public Menu Menu
        {
            get { return menu; }
            set { menu = value; }
        }
        float precioCosto;

        public float PrecioCosto
        {
            get { return precioCosto; }
            set { precioCosto = value; }
        }

        float precioVenta;

        public float PrecioVenta
        {
            get { return precioVenta; }
            set { precioVenta = value; }
        }

        public static List<Presupuesto_Detalle> listarPresupuestoDetalle_Lista(Presupuesto presu)
        {
            List<Presupuesto_Detalle> lista = new List<Presupuesto_Detalle>();
            DataTable tabla = listarPresupuestoDetalle_Tabla(presu.Id);
            Presupuesto_Detalle pd = new Presupuesto_Detalle();
            pd.Menu = new Menu();
            foreach (DataRow fila in tabla.Rows)
            {
                pd = new Presupuesto_Detalle();
                pd.Menu = new Menu();
                pd.precioCosto = float.Parse(fila["Precio"].ToString());// o .value
                if (fila["PrecioVenta"].ToString() != "")
                {
                    pd.PrecioVenta = float.Parse(fila["PrecioVenta"].ToString());
                }
                pd.Menu.Id = int.Parse(fila["MenuId"].ToString());
                lista.Add(pd);
            }
            //listo los menues presentes en el presupuesto
            List<App_Negocio.Menu> listaMenu = App_Negocio.Menu.listarMenu_Lista(presu);

            //asigno los menues a los presupuestos
            App_Negocio.Menu mdp = new App_Negocio.Menu();
            int idMenu = -1;
            foreach (App_Negocio.Presupuesto_Detalle pdet in lista)
            {
                mdp = new Menu();
                idMenu = pdet.Menu.Id;
                pdet.menu = listaMenu.Find(delegate(Menu _men)
                {
                    bool ret = false;
                    if (_men.Id == idMenu)
                    {
                        ret = true;
                    }
                    return ret;
                });
            }

            return lista;
        }

        public static DataTable listarPresupuestoDetalle_Tabla(int idPresupuesto)
        {
            Presupuesto_Detalles_Data pdd = new Presupuesto_Detalles_Data();
            DataTable tabla = pdd.buscarPresupuestoDetalle(idPresupuesto);
            return tabla;
        }

        private static bool encuentra(App_Negocio.Menu menu1, App_Negocio.Menu menu2)
        {
            return menu1 == menu2;
        }

        public float calcularPrecioCosto()
        {
            PrecioCosto = Menu.damePrecio();
            return PrecioCosto;
        }

        public float calcularPrecioVenta(double costoFijoPorTarjeta, float porcGanancia)
        {
            PrecioVenta = (float) ((PrecioCosto + costoFijoPorTarjeta) + (PrecioCosto + costoFijoPorTarjeta) * porcGanancia/100);
            //TA HARCODEADASO
            PrecioVenta = PrecioVenta * 2;
            return PrecioVenta;
        }

    }
}
